#-*- coding: utf-8 -*-
import random
import pickle
from helper import *

class JeuOrion(object):
    def __init__(self,parent,joueurlocal):
        self.parent=parent
        self.joueurlocal=joueurlocal
        self.message={}
        self.dernierEnvoie=""
        self.univers=Univers()
        
    def newDestination(self,evt):
            self.univers.civs[self.joueurlocal].vaisseaux[0].setDestination(evt.x,evt.y)
            self.parent.newAction([self.joueurlocal,"destination",[evt.x,evt.y]])


    def ajouteJoueur(self,nom):
        civ=self.univers.ajouteJoueur(nom)
        self.message[nom]=[]
        self.updateMessage(nom,"civ",civ)


    def ajouteCiv(self,nom,civ):
        self.univers.civs[nom]=civ
        
    def updateMessage(self,nom,style,obj):
        pickleobj=pickle.dumps(obj)
        for i in self.message:
            if i<>nom:
                self.message[i].append([nom,style,pickleobj])
            
    def update(self):
        self.univers.update()
        
class Univers(object):
    def __init__(self):
        self.taillex=500
        self.tailley=500
        self.civs={}
        self.couleurscivs=["blue","green","purple","orange"]
        
    def ajouteJoueur(self,nom):
        couleur=self.couleurscivs.pop()
        self.civs[nom]=Civ(self,nom,couleur)
        return self.civs[nom]
        
    def update(self):
        for i in self.civs:
            self.civs[i].update()       
            
    def updateCiv(self,nom,style,action):
        if style=="destination":
            self.civs[nom].vaisseaux[0].setDestination(int(action[0]),int(action[1]))  
             
class Civ(object):
    def __init__(self,parent,nom,couleur):
        self.parent=parent
        self.couleur=couleur
        self.nom=nom
        self.vaisseaux=[]
        self.creeVaisseau(random.randrange(self.parent.taillex/2),random.randrange(self.parent.tailley/2))
        
    def creeVaisseau(self,x,y):
        self.vaisseaux.append(Vaisseau(self,x,y))
        
    def update(self):
        for i in self.vaisseaux:
            i.deplace()

class Vaisseau(object):
    def __init__(self,parent,x,y):
        self.parent=parent
        self.x=x
        self.y=y
        self.destinationx=0
        self.destinationy=0
        self.vitesse=5
        self.angle=0
        
    def setDestination(self,x,y):
        self.destinationx=x
        self.destinationy=y
        self.angle=Helper.calcAngle(self.x,self.y,self.destinationx,self.destinationy)
        
    def deplace(self):
        if self.destinationx>0 and self.destinationy>0:
            self.x,self.y= Helper.getAngledPoint(self.angle,self.vitesse,self.x,self.y)
        
if __name__ == '__main__':
    j=JeuOrion("","")
    j.ajouteJoueur("toto")
    